// 只是实现了表中要求的API，未实现迭代部分

import java.util.Iterator;

public class Exercise1_3_33_Deque<Item> implements Iterable<Item>{

    private Exercise1_3_31<Item> deLinedList = new Exercise1_3_31<>();  // 一个双向链表 （类Exercise1_3_31 为双向链表类）
    private int N;

    public Exercise1_3_33_Deque(){ }

    public boolean isEmpty(){
        // 是否为空
        return N == 0;
    }

    public int size(){
        // 元素数量
        return N;
    }

    public void pushLeft(Item item){
        // 向左端添加一个新元素
        deLinedList.addAtTop(item);
        N++;
    }

    public void pushRight(Item item){
        // 向右端添加一个新元素
        deLinedList.addAtEnd(item);
        N++;
    }

    public Item popLeft(){
        // 从左端删除一个元素
        N--;
        return deLinedList.deAtTop();
    }

    public Item popRight(){
        // 从右端删除一个元素
        N--;
        return deLinedList.deAtEnd();
    }

    @Override
    public Iterator<Item> iterator() {
        // 未实现
        return null;
    }

    public void print(){
        // 打印
        deLinedList.print();
    }

    public static void main(String args[]){
        String[] strings = {"1", "2", "3", "4", "5"};
        Exercise1_3_33_Deque<String> deque = new Exercise1_3_33_Deque<>();
        for (String a : strings){
            deque.pushLeft(a);
        }
        deque.print();

        deque.popLeft();
        deque.print();

        deque.popRight();
        deque.print();

        deque.pushRight("test");
        deque.print();
    }
}
